package com.dc.dao;

import com.dc.entity.UserEntity;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional;


/**
 * 用户表 数据层
 * 
 */
public interface UserDao extends JpaRepository<UserEntity, Long>, JpaSpecificationExecutor<UserEntity>
{
    /**
     * 根据条件分页查询用户列表
     * 
     * @param name 用户信息
     * @return 用户信息集合信息
     */
    public Page<UserEntity> findSysUsersByName(String name, Pageable pageable);


    /**
     * 登录中使用
     * @param userName
     * @return
     */
    UserEntity findByUserNameAndPassword(String userName, String password);


    /**
     * 登录中使用
     * @param userName
     * @return
     */
    UserEntity findByUserName(String userName);

    /**
     * 校验用户名称是否唯一
     *
     * @param username 用户名称
     * @return 结果
     */
    public boolean existsSysUserByUserName(String username);


    /**
     * 重置用户密码
     * 
     * @param id 主键
     * @param password 密码
     * @return 结果
     */
    @Transactional
    @Modifying
    @Query("update UserEntity set password = :password where id = :id")
    public int updatePasswordById(@Param("id") Long id, @Param("password") String password);

}
